﻿Imports Persistencia
Public Class relContatosRealizados
    Inherits relPadrao

#Region "Variáveis"
    Private objOcorrencias As New perOcorrencias
    Private iIdCliente As Int32
    Private iIdStatus As Int32
    Private iIdUsuario As Int32
    Private dtDataInicio As Date
    Private dtDataFim As Date
    Private iRegiao As Int32
    Private sCliente As String
    Private sStatus As String
    Private sUsuario As String
    Private bDetalhe As Boolean = True
    Private iTotalContatos As Int32
    Private iTipoRelatorio As Int32
#End Region

#Region "Propriedades"
    Public Enum eTipoRelatorio As Integer
        Detalhado = 0
        Reduzido = 1
    End Enum

    Public Property TipoRelatorio() As Int32
        Get
            Return Me.iTipoRelatorio
        End Get
        Set(ByVal value As Int32)
            Me.iTipoRelatorio = value
        End Set
    End Property

    Public Property NomeCliente() As String
        Get
            Return Me.sCliente
        End Get
        Set(ByVal value As String)
            Me.sCliente = value
        End Set
    End Property

    Public Property NomeStatus() As String
        Get
            Return Me.sStatus
        End Get
        Set(ByVal value As String)
            Me.sStatus = value
        End Set
    End Property

    Public Property NomeUsuario() As String
        Get
            Return Me.sUsuario
        End Get
        Set(ByVal value As String)
            Me.sUsuario = value
        End Set
    End Property

    Public Property IDCliente() As Int32
        Get
            Return Me.iIdCliente
        End Get
        Set(ByVal value As Int32)
            Me.iIdCliente = value
        End Set
    End Property

    Public Property IDStatus() As Int32
        Get
            Return Me.iIdStatus
        End Get
        Set(ByVal value As Int32)
            Me.iIdStatus = value
        End Set
    End Property

    Public Property IDUsuario() As Int32
        Get
            Return Me.iIdUsuario
        End Get
        Set(ByVal value As Int32)
            Me.iIdUsuario = value
        End Set
    End Property

    Public Property DataInicio() As Date
        Get
            Return Me.dtDataInicio
        End Get
        Set(ByVal value As Date)
            Me.dtDataInicio = value
        End Set
    End Property

    Public Property DataFim() As Date
        Get
            Return Me.dtDataFim
        End Get
        Set(ByVal value As Date)
            Me.dtDataFim = value
        End Set
    End Property

#End Region

#Region "Métodos privados"

    Private Sub relClientes_carregaDados(ByRef dsRPT As Object) Handles Me.carregaDados
        Dim dsContatosRealizados As New dsContatosRealizados
        Dim drContatosRealizados As dsContatosRealizados.ContatosRealizadosRow
        Dim dtDados As New DataTable
        Dim drDados As DataRow

        Try
            dtDados = Me.objOcorrencias.selecionaContatosRealizados(Me.IDCliente, _
                                                                    Me.IDStatus, _
                                                                    Me.IDUsuario, _
                                                                    Me.DataInicio, _
                                                                    Me.DataFim)


            If Not dtDados Is Nothing AndAlso dtDados.Rows.Count > 0 Then
                For Each drDados In dtDados.Rows
                    drContatosRealizados = DirectCast(dsRPT, dsContatosRealizados).ContatosRealizados.NewContatosRealizadosRow
                    With drContatosRealizados
                        .IDCliente = perConversao.ToInt32(drDados.Item("IDCliente"))
                        .Cliente = perConversao.ToString(drDados.Item("RazaoSocial"))
                        .Contato = perConversao.ToString(drDados.Item("NomeContato"))
                        .Usuario = perConversao.ToString(drDados.Item("NomeUsuario"))
                        .Data = perConversao.ToDateTime(drDados.Item("Data"))
                        .IDContato = perConversao.ToInt32(drDados.Item("IDContato"))
                        .IDUsuario = perConversao.ToInt32(drDados.Item("IDUsuario"))
                        If Me.TipoRelatorio = eTipoRelatorio.Detalhado Then
                            .Observacao = perConversao.ToString(drDados.Item("Observacoes"))
                        End If
                    End With
                    DirectCast(dsRPT, dsContatosRealizados).ContatosRealizados.AddContatosRealizadosRow(drContatosRealizados)
                Next

            End If

        Catch ex As Exception
            Throw New Exception("Exceção no método 'carregaDados'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Sub

    Private Sub relClientes_carregaFormulas(ByRef crRPT As Object) Handles Me.carregaFormulas
        Dim sSubTitulo As String = ""

        If (Me.IDCliente <> 0) Then
            sSubTitulo &= "Cliente: " & Me.sCliente
        Else
            sSubTitulo &= "Cliente: todos"
        End If
        sSubTitulo &= "".PadLeft(3)

        If (Me.IDStatus <> 0) Then
            sSubTitulo &= "Status: " & Me.sStatus
        Else
            sSubTitulo &= "Status: todos"
        End If
        sSubTitulo &= "".PadLeft(3)

        If (Me.IDUsuario <> 0) Then
            sSubTitulo &= "Usuário: " & Me.NomeUsuario
        Else
            sSubTitulo &= "Usuário: todos"
        End If
        sSubTitulo &= "".PadLeft(3)

        If (Me.DataInicio <> Date.MinValue) Then
            sSubTitulo &= "Data início: " & Me.DataInicio
        Else
            sSubTitulo &= "Data início: todas"
        End If
        sSubTitulo &= "".PadLeft(3)

        If (Me.DataFim <> Date.MaxValue) Then
            sSubTitulo &= "Data fim: " & Me.DataFim
        Else
            sSubTitulo &= "Data fim: todas"
        End If

        With crRPT.DataDefinition.formulaFields
            .item("SubTitulo").text = "'" & sSubTitulo & "'"
        End With

    End Sub

#End Region

#Region "Métodos públicos"

    Public Function imprime(ByVal byDispositivoSaida As eDispositivoSaida) As Boolean
        Dim dsRPT As DataSet
        Dim crRPT As CrystalDecisions.CrystalReports.Engine.ReportClass
        Dim bProcesso As Boolean = False

        Try
            dsRPT = New dsContatosRealizados
            crRPT = New rptContatosRealizados

            crRPT.SummaryInfo.ReportTitle = "Contatos realizados por período"

            bProcesso = objRelatorio.processa(byDispositivoSaida = eDispositivoSaida.impressora, dsRPT, crRPT)

            Return bProcesso
        Catch ex As Exception
            Throw New Exception("Exceção no método 'imprime'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Function

#End Region
End Class
